<?php
/*
 * estudo de padrões de projetos com php
 * author: fabricio s costa
 * version: 1.0
 * site: http://fabriciojf.com
 */
require_once('com/fabriciojf/persistence/UsuarioDAO.class.php');
require_once('com/fabriciojf/model/Usuario.class.php');

class Permission {

    public static function requireInAdmin() {

        @session_start();
        if (!(isset($_SESSION['idUsuarioLogado']))) {
            FrontController::sendRedirect("Login");
            exit;
        } else {
            $usuarioDao = new UsuarioDAO();
            $id = $_SESSION['idUsuarioLogado'];
            $stmt = $usuarioDao->findForIdAndRole($id, 'admin');
            if ($stmt->rowCount() < 1) {
                FrontController::sendRedirect("Login");
                exit;
            }
        }
    }

    public static function requireInRole(Array $roles) {

        @session_start();
        if (!(isset($_SESSION['idUsuarioLogado']))) {
            FrontController::sendRedirect("Login");
            exit;
        } else {
            $usuarioDao = new UsuarioDAO();
            $id = $_SESSION['idUsuarioLogado'];

            $pertence = false;
            for ($i = 0 ; $i < count($roles) ; $i++) {
                
                $stmt = $usuarioDao->findForIdAndRole($id, $roles[$i]);
                if ($stmt->rowCount() > 0) {
                    $pertence = true;
                }
            }

            if (!$pertence) {
                FrontController::sendRedirect("Login");
                exit;
            }
        }
    }

    public static function isInRole(Array $roles) {

        @session_start();
        if ((isset($_SESSION['idUsuarioLogado']))) {

            $usuarioDao = new UsuarioDAO();
            $id = $_SESSION['idUsuarioLogado'];

            $pertence = false;
            for ($i = 0 ; $i < count($roles) ; $i++) {
                $stmt = $usuarioDao->findForIdAndRole($id, $roles[$i]);
                if ($stmt->rowCount() > 0) {
                    $pertence = true;
                }
            }

            return $pertence;
        }
    }
}
?>
